#ifndef __TESTPROC_H__
#define __TESTPROC_H__

#ifndef USB_CLASS_PER_INTERFACE
	#define USB_CLASS_PER_INTERFACE         0		//保留分类
#endif
#ifndef USB_CLASS_AUDIO
	#define USB_CLASS_AUDIO                 1		//音频设备
#endif
#ifndef USB_CLASS_COMM
	#define USB_CLASS_COMM                  2		//通信及通信类控制设备
#endif
#ifndef USB_CLASS_HID
	#define USB_CLASS_HID                   3		//人体工学设备
#endif
#ifndef USB_CLASS_PHYSICAL
	#define USB_CLASS_PHYSICAL              5		//物理设备
#endif
#ifndef USB_CLASS_STILL_IMAGE
	#define USB_CLASS_STILL_IMAGE           6		//图像设备
#endif
#ifndef USB_CLASS_PRINTER
	#define USB_CLASS_PRINTER               7		//打印设备
#endif
#ifndef USB_CLASS_MASS_STORAGE
	#define USB_CLASS_MASS_STORAGE          8		//大容量存储
#endif
#ifndef USB_CLASS_HUB
	#define USB_CLASS_HUB                   9		//集线器
#endif
#ifndef USB_CLASS_CDC_DATA
	#define USB_CLASS_CDC_DATA              0x0a		//通信类数据设备
#endif
#ifndef USB_CLASS_CSCID
	#define USB_CLASS_CSCID                 0x0b		//智能卡
#endif
#ifndef USB_CLASS_CONTENT_SEC
	#define USB_CLASS_CONTENT_SEC           0x0d		//内容安全性
#endif
#ifndef USB_CLASS_VIDEO
	#define USB_CLASS_VIDEO                 0x0e		//视频
#endif
#ifndef USB_CLASS_WIRELESS_CONTROLLER
	#define USB_CLASS_WIRELESS_CONTROLLER   0xe0		//无线控制器
#endif
#ifndef USB_CLASS_PERSONAL_HEALTHCARE
	#define USB_CLASS_PERSONAL_HEALTHCARE   0x0f		//个人医疗设备
#endif
#ifndef USB_CLASS_AUDIO_VIDEO
	#define USB_CLASS_AUDIO_VIDEO           0x10		//视频、音频设备
#endif
#ifndef USB_CLASS_BILLBOARD
	#define USB_CLASS_BILLBOARD             0x11		//公告牌设备
#endif
#ifndef USB_CLASS_USB_TYPE_C_BRIDGE
	#define USB_CLASS_USB_TYPE_C_BRIDGE     0x12		//usb type-c桥接类
#endif
#ifndef USB_CLASS_MISC
	#define USB_CLASS_MISC                  0xef		//混杂设备
#endif
#ifndef USB_CLASS_APP_SPEC
	#define USB_CLASS_APP_SPEC              0xfe		//应用相关
#endif
#ifndef USB_CLASS_VENDOR_SPEC
	#define USB_CLASS_VENDOR_SPEC           0xff		//自定义
#endif

//三种大类设备usb device interface
enum dev_type{
	DEV_TYPE_USB = 0,			//USB类型
	DEV_TYPE_DEVICE,			//device类型
	DEV_TYPE_INTF,				//interface类型
	DEV_TYPE_MAX
};

//interface类型子类
enum intf_type_eu{
	INTF_SERIAL = 1,			//串口
	INTF_PARALLEL,				//并口
	INTF_1394,				//1394接口
	INTF_PCMCIA,				//PCMCIA接口
	INTF_TYPEC,				//type-c接口
	INTF_HDMI,				//hdmi接口
	INTF_DISPLAYPORT,			//display接口
	INTF_MAX
};

//device类型子类
enum device_type_eu{
	DEVICE_BLUETOOTH = 1,			//蓝牙
	DEVICE_INFRARED,			//红外
	DEVICE_MODEM,				//modem设备
	DEVICE_STORAGE_DRIVE,			//存储驱动器sd tf卡
	DEVICE_SCSI_RAID,			//scsi raid驱动器
	DEVICE_WINCE,				//wince设备 安卓手机、pad等
	DEVICE_FLOPPY_DRIVE,			//软驱
	DEVICE_IMAGE,				//图像设备  摄像头、数码相机、扫描仪
	DEVICE_MULTI_SERIAL_CARD,		//多串口卡
	DEVICE_ETHERNET,			//以太网
	DEVICE_WIRELESS,			//无线
	DEVICE_PRINTER,				//打印机
	DEVICE_PRINTER_LOCAL,			//本地打印机
	DEVICE_CDROM,				//刻录机
	DEVICE_VOLUMESHADOW,			//卷影设备
	DEVICE_TAPE,				//磁带机
	DEVICE_MAX
};

//大类类型对应子类的开关
struct type_switch {
        int desc;				//子类类型
        int open;				//1为功能生效，0为不生效
};

//返回设备数据数据头
struct dev_data_hdr{
	int usb_nu;				//所有usb设备数量
	int usb_wlist_nu;			//usb白名单数量
	char data[0];				
};
//usb设备属性
struct usb_attr{
	u32 vid;				//usb vendor id
	u32 pid;				//usb product id
	u32 clsid;				//usb interface class id
};
//usb设备白名单节点
struct usb_wlist_node{
	struct list_head list;
	u32 vid;
	u32 pid;
	u32 clsid;
};
//传入设备开关设置数据
struct dev_switch{
	int type;				//设备大类device usb interface
	int sub_type;				//子设备类型
	int open;				//1为功能生效，0为不生效
};

//用于获取usb设备的回调函数的数据头
struct all_usb_data{
	int data_len;				//数据体所有长度
	int index;				//数据尾部坐标
	char data[0];
};

#endif
